/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.gob.fonafe.dao.impl.stored;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.HashMap;
import java.util.Map;
import javax.sql.DataSource;
import oracle.jdbc.OracleTypes;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.SqlParameter;
import org.springframework.jdbc.object.StoredProcedure;
import org.springframework.jdbc.core.SqlOutParameter;
import pe.gob.fonafe.domain.UsuarioBean;
/**
 *
 * @author Irving
 */

public class ListarUsuariosSP extends StoredProcedure{
    
    private static final String PROC_PARAM ="USERADMIN.P_OBT_LIST_USUARIOS";
              
    public ListarUsuariosSP(DataSource ds) {
        super(ds,PROC_PARAM);
        declareParameter(new SqlParameter("P_TB_PERFIL_ID_PERFIL", Types.NUMERIC));
        declareParameter(new SqlParameter("P_TB_EMPRESA_ID_EMPRESA", Types.NUMERIC));
        declareParameter(new SqlParameter("P_NOMBRE_COMPLETO", Types.VARCHAR));
        declareParameter(new SqlParameter("P_EMAIL", Types.VARCHAR));
        declareParameter(new SqlOutParameter("cCursor", OracleTypes.CURSOR,new ListarUsuariosRowMapper()));
        compile();
    }
    
    public Map execute(int tb_Perfil_id_perfil, int tb_Empresa_id_empresa, String nombreCompleto, String email) {
        Map inputs = new HashMap();
        inputs.put("P_TB_PERFIL_ID_PERFIL", tb_Perfil_id_perfil);
        inputs.put("P_TB_EMPRESA_ID_EMPRESA", tb_Empresa_id_empresa);
        inputs.put("P_NOMBRE_COMPLETO", nombreCompleto);
        inputs.put("P_EMAIL", email);
        return super.execute(inputs);
    }
    
    private static class ListarUsuariosRowMapper implements RowMapper<UsuarioBean>{
   
        public UsuarioBean mapRow(ResultSet rs, int rowNum) throws SQLException {
            UsuarioBean bean = new UsuarioBean();
            bean.setId_usuario(rs.getInt("id_usuario"));
            bean.setDniUsuario(rs.getString("dniUsuario"));
            bean.setNombre(rs.getString("nombre"));
            bean.setApe_Paterno(rs.getString("ape_Paterno"));
            bean.setApe_Materno(rs.getString("ape_materno"));
            bean.setEmail(rs.getString("email"));
            bean.setFecha_nacimiento(rs.getDate("fecha_nacimiento"));
            bean.setFecha_creacion(rs.getDate("fecha_creacion"));
            bean.setFecha_caducidad(rs.getDate("fecha_caducidad"));
            bean.setTb_Perfil_id_perfil(rs.getInt("tb_Perfil_id_perfil"));
            bean.setTb_Empresa_id_empresa(rs.getInt("tb_Empresa_id_empresa"));             
            bean.setTipoPerfil(rs.getString("TIPOPERFIL"));
            bean.setLogin(rs.getString("login"));
            bean.setPassword(rs.getString("password"));
            bean.setNombre_empresa(rs.getString("nombre_empresa"));
            return bean;
        }
    }
    
}
